﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace DiveManager
{
    public partial class ArtikelBearbeitenWarenkorb : Form
    {
        protected DiveDatabaseEntities diveDatabase;
        
        public Guid artikelID;
        private int berechnungfrei1 = 0;
        public int berechnungfrei2 = 0;
        public int berechnungfrei3 = 0;
        public bool changes = false;
        public int artikelnr;
        public int mwst_satz;

        public double zws;
        public double artikel_netto;
        public double differenz;
        public double gesamt_netto;

        
        public ArtikelBearbeitenWarenkorb()
        {
            InitializeComponent();

            // Init Database
            diveDatabase = new DiveDatabaseEntities();

        }

        private void ArtikelBearbeitenWarenkorb_Load(object sender, EventArgs e)
        {
            artikelID = new Guid(Weitergabe_Artikel);
            txShowArtikelNr.Text = artikelID.ToString();

            txShowIst_Preis.Text = "0";
            txShowMenge.Text = "0";
            txShowRabatt.Text = "0";

            //Abfrage in WarenkorbDetail
            var query_detail = (from wd in diveDatabase.WarenkorbDetails
                             where wd.ID == artikelID
                             select wd);

            foreach (var wd in query_detail)
            {
                txShowArtikelNr.Text = wd.Artikel_Nr.ToString();
                txShowBezeichnung.Text = wd.Bezeichnung;
                txShowBeschreibung.Text = wd.Beschreibung;
                txShowSoll_Preis.Text = wd.Soll_Preis.ToString();
                txShowIst_Preis.Text = wd.Ist_Preis.ToString();
                txShowGesamtpreis.Text = wd.Gesamtpreis.ToString();
                txShowRabatt.Text = wd.Rabatt_prozent.ToString();
                txShowMenge.Text = wd.Menge.ToString();
                mwst_satz = Convert.ToInt32(wd.MWST);
            }

            artikelnr = Convert.ToInt32(txShowArtikelNr.Text);

            if (artikelnr==9999)
            {
                txShowBezeichnung.ReadOnly = false;
            }
        }

        public string Weitergabe_Artikel
        {
            get;
            set;
        }

        private void txShowIst_Preis_TextChanged(object sender, EventArgs e)
        {
            berechnungfrei1=berechnungfrei1 +1;
            if (berechnungfrei1 >= 2)
            {
                Berechnen();
            }
        }

        public void Berechnen()
        {
            double VKPreis=0;
            double Menge=0;
            double Prozent=0;
            double zws1;
            double rabattsumme;
            double summe;

            if (txShowIst_Preis.Text.Equals(""))
            {
            }
            else
            {
                if (txShowMenge.Text.Equals(""))
                {
                }
                else
                {
                    if (txShowRabatt.Text.Equals(""))
                    {
                    }
                    else
                    {
                        VKPreis = Convert.ToDouble(txShowIst_Preis.Text);
                        Menge = Convert.ToDouble(txShowMenge.Text);
                        Prozent = Convert.ToDouble(txShowRabatt.Text);
                    }
                }
            }

            zws1 = VKPreis * Menge;
            rabattsumme = zws1 / 100 * Prozent;
            summe = zws1 - rabattsumme;

            txShowGesamtpreis.Text = summe.ToString();

        }

        private void txShowMenge_TextChanged(object sender, EventArgs e)
        {
            berechnungfrei2 = berechnungfrei2 + 1;
            if (berechnungfrei2 >= 2)
            {
                Berechnen();
            }
        }

        private void txShowRabatt_TextChanged(object sender, EventArgs e)
        {
            berechnungfrei3 = berechnungfrei3 + 1;
            if (berechnungfrei3 >= 2)
            {
                Berechnen();
            }
        }

        private void btOK_Click(object sender, EventArgs e)
        {
            //MWST berechnen
            double preis = Convert.ToDouble(txShowIst_Preis.Text);
            double menge = Convert.ToDouble(txShowMenge.Text);
            zws = preis / 100 * mwst_satz;
            artikel_netto = preis - zws;
            differenz = preis - artikel_netto;
            gesamt_netto = artikel_netto * menge;
            
            
            //Daten in DB auf die hier eingegeben Werte setzen

            var edit_artikel = from sm in diveDatabase.WarenkorbDetails
                          where sm.ID == artikelID
                          select sm;

            foreach (WarenkorbDetails wd in edit_artikel)
            {
                wd.Beschreibung = txShowBeschreibung.Text;
                wd.Rabatt_prozent = Convert.ToDouble(txShowRabatt.Text);
                wd.Menge = Convert.ToInt32(txShowMenge.Text);
                wd.Ist_Preis = Convert.ToDouble(txShowIst_Preis.Text);
                wd.Gesamtpreis = Convert.ToDouble(txShowGesamtpreis.Text);
            }

            diveDatabase.SaveChanges();
            changes = true;

            Close();

        }

        private void btExit_Click(object sender, EventArgs e)
        {
            //Abbrechen
            Close();
        }
    }
}
